package rep;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;

import modelo.Cuenta;
import bean.Reporte_Jasper;

public class Estado_Cuenta_General extends Reporte_Jasper {
	private Cuenta cuenta;
	
	public Estado_Cuenta_General(Cuenta cuenta,String dir_jasper,String dir_out,String subreport_dir) {
		super();
		this.setCuenta(cuenta);
		HashMap<String, Object> paramentos = new HashMap<String, Object>();
		String fecha = String.valueOf(getCuenta().getFecha().toGMTString().substring(2, 6).replaceAll(" ", "")+"-"+getCuenta().getFecha().toGMTString().substring(6, 11)).replaceAll(" ", "");
		paramentos.put("Cuenta", fecha);
	 	paramentos.put("Cliente",getCuenta().getCliente().getNombre()+" "+cuenta.getCliente().getApellido());
	 	paramentos.put("Identificacion", getCuenta().getCliente().getCedula_rif());
		paramentos.put("SUBREPORT_DIR", subreport_dir);
		paramentos.put("PATH_ICON", "/home/adriana/Escritorio/SACFRE/src/imagen/logo_reporte.jpg");
		this.setParametros(paramentos);
		this.setDir_jasper(dir_jasper);
		List estado_cuenta_general = new ArrayList<Estado_Cuenta_General>();
		estado_cuenta_general.add(this);
		this.setNombre("Estado Cuenta General");
		this.setDi_out(dir_out+getNombre()+".pdf");
		this.setJrbeancollention(estado_cuenta_general);
	}

	public Cuenta getCuenta() {
		return cuenta;
	}

	public void setCuenta(Cuenta cuenta) {
		this.cuenta = cuenta;
	}
	
	public JRDataSource getCompras() {
		return new JRBeanCollectionDataSource(getCuenta().getCompras());
	}


	public JRDataSource getVentas() {
		return new JRBeanCollectionDataSource(getCuenta().getVentas());
	}


	public JRDataSource getPagos() {
		return new JRBeanCollectionDataSource(getCuenta().getPagos());
	}
	
	public double getTotal_compras(){
		double total = 0;
		for (int i=0;i<getCuenta().getCompras().size();i++){
			try {
				total+=getCuenta().getCompras().get(i).getMonto_compra();
			} catch (ParseException e) {
				e.printStackTrace();
			}
		}
		System.out.println(total);
		return total;
	}
	public double getTotal_ventas(){
		double total = 0;
		for (int i=0;i<getCuenta().getVentas().size();i++){
			try {
				total+=getCuenta().getVentas().get(i).getMonto_venta();
			} catch (ParseException e) {
				e.printStackTrace();
			}
		}
		System.out.println(total);
		return total;
	}
	public double getTotal_pagos(){
		double total = 0;
		for (int i=0;i<getCuenta().getPagos().size();i++){
			total+=getCuenta().getPagos().get(i).getMonto();
		}
		System.out.println(total);
		return total;
	}
	public double getTotal_pagar(){
		return getTotal_compras()-getTotal_ventas()-getTotal_pagos();
	}
}
